package com.miniapi.api.controllers;

import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.miniapi.api.services.WeChatSubscribeService;
import com.miniapi.api.services.WeChatClickService;

import ybl.baiducloud.ApiException;
import ybl.baiducloud.QianFanService;
import ybl.wechat.WeChatService;

import jakarta.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.Random;
import java.util.List;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;

@RestController
@RequestMapping("/api/wx/")
public class WxController {
    @Autowired
    private WeChatClickService weChatClickService;

    @Autowired
    private WeChatSubscribeService weChatSubscribeService;

    private static List<String> getRandomElements(List<String> list, int totalItems) {
        Collections.shuffle(list);
        return list.subList(0, totalItems);
    }

    @GetMapping("handleLogic")
    public String checkServer(@RequestParam Map<String, String> allParams) {
        return WeChatService.checkWxServer(allParams);
    }

    @PostMapping("handleLogic")
    public String handleMessage(HttpServletRequest request) throws Exception {
        JSONObject jsonObject = WeChatService.requestBody2Json(request).getJSONObject("xml");
        System.out.println(jsonObject);
        String fromUser = jsonObject.getString("FromUserName");
        String toUser = jsonObject.getString("ToUserName");
        String msgType = jsonObject.getString("MsgType");

        switch (msgType) {
            case "text": {
                String recieveContent = jsonObject.getString("Content");
                new Thread(() -> {
                    String qianfanAccessToken = "24.e24ef82247af80ca96acbcd81582e6d0.2592000.1715157375.282335-42741415";
                    List<Map<String, String>> messages = Arrays.asList(
                            new HashMap<String, String>() {
                                {
                                    put("role", "user");
                                    put("content", "You are an English teacher, your name is Jerry");
                                }
                            },
                            new HashMap<String, String>() {
                                {
                                    put("role", "assistant");
                                    put("content", "Okay");
                                }
                            },
                            new HashMap<String, String>() {
                                {
                                    put("role", "user");
                                    put("content", recieveContent);
                                }
                            });

                    try {
                        JSONObject response = QianFanService.talkWithQianfan(qianfanAccessToken, messages);
                        System.out.println(response);
                        String content = response.getString("result");
                        JSONObject reply = new JSONObject();
                        reply.put("touser", fromUser);
                        reply.put("msgtype", "text");
                        reply.put("text", new JSONObject().put("content", content));
                        WeChatService.sendCustomerServiceMessage(reply);
                    } catch (JSONException | ApiException | IOException e) {
                        e.printStackTrace();
                    }
                }).start();
                return WeChatService.buildTextReply(fromUser, toUser, "对方正在打字，请稍等");
            }
            case "voice":
                break;
            case "video":
                break;
            case "image":
                break;
            case "event":
                switch (jsonObject.getString("Event")) {
                    case "subscribe":
                        if (jsonObject.has("Ticket")) {
                            // 扫码关注
                            String ticket = jsonObject.getString("Ticket");
                            weChatSubscribeService.handleSubscribeByScan(fromUser, ticket);

                        } else {
                            // 普通关注
                            weChatSubscribeService.handleSubscribe(fromUser);
                        }
                        return WeChatService.buildTextReply(fromUser, toUser, "这里可以返回图文链接，链接中包含推广信息，引导用户下单。。。。。。");
                    case "unsubscribe":
                        // 取消关注
                        weChatSubscribeService.handleCancelSubscribe(fromUser);
                        return null;
                    case "SCAN":
                        // 扫描带参二维码进入
                        return WeChatService.buildTextReply(fromUser, toUser, "这里可以返回图文链接，链接中包含推广信息，引导用户下单。。。。。。");
                    case "CLICK": {
                        switch (jsonObject.getString("EventKey")) {
                            case "myCode":
                                // 获取自己专属的推广二维码
                                return weChatClickService.handleClickForGetTemporaryQRCodeForPromotion(fromUser,
                                        toUser);
                            case "myPromotion":
                                return weChatClickService.handleClickForPromotionData(fromUser, toUser);
                            default:
                                break;
                        }
                    }
                    // 公众号菜单栏扫条码
                    case "scancode_waitmsg": {
                        List<String> images = Arrays.asList(
                                "ig3-_pCRJKYcfCr4DQ9lHLK8oZnR1nNuCeiwIGo2BUAeEkoFnSHqRjQFxmjiu9vc",
                                "ig3-_pCRJKYcfCr4DQ9lHGVJk0u3dqR9cUzVPzwN__xk2SJuf1MRfYASinGyt6hH",
                                "ig3-_pCRJKYcfCr4DQ9lHJsfaR6O6lHJUOvlXI3mItT-hEhxZU_RHsfTbB5TGcJA",
                                "ig3-_pCRJKYcfCr4DQ9lHLk_VRQSG79j052nvJmdUXkX23dTQ0EIUKy8Y6pkwhJp",
                                "ig3-_pCRJKYcfCr4DQ9lHLoPLqihBV3JVCFFWH2Zngj-riFbop1jov3B7BI2s4wG");

                        List<String> randomElements = getRandomElements(images, 3);
                        JSONObject kefu = new JSONObject();
                        kefu.put("touser", fromUser);
                        kefu.put("msgtype", "image");
                        for (String s : randomElements) {
                            kefu.put("image", new JSONObject().put("media_id", s));
                            WeChatService.sendCustomerServiceMessage(kefu);
                        }

                        Thread.sleep(1000);
                        List<String> articles = Arrays.asList(
                                "我家宝宝是敲调皮的性格，\r\n" + //
                                        "就算是这么冷的冬天❄️\r\n" + //
                                        "也阻挡不了小家伙外出的步伐\r\n" + //
                                        "每天都想要拉着我出门玩🤗\r\n" + //
                                        "寒风一吹，小脸一下就干痒红了！迅速的毫不夸张\r\n" + //
                                        "搞得我也是很郁闷🤔\r\n" + //
                                        "-\r\n" + //
                                        "家长一年四季都要关注宝宝的皮肤护理\r\n" + //
                                        "尤其是冬天，血液循环差，肌肤屏障也脆弱\r\n" + //
                                        "现在我家宝宝开始用✅红色小象90安心霜\r\n" + //
                                        "自己觉得放心了不少\r\n" + //
                                        "这款安心霜美修全绿通过的\r\n" + //
                                        "里面仅有9种成分\r\n" + //
                                        "极简用起来也友好安心\r\n" + //
                                        "没有❌刺激成分的添加\r\n" + //
                                        "不会给宝宝的皮肤造成负担\r\n" + //
                                        "-\r\n" + //
                                        "之前宝宝皮肤很容易有泛红之类的问题\r\n" + //
                                        "这款里面特别添加了🌟巴西天然红没药醇\r\n" + //
                                        "宝宝使用之后，感觉皮肤舒缓了很多\r\n" + //
                                        "干痒红的问题也没有了👏\r\n" + //
                                        "-\r\n" + //
                                        "因为是✅真空锁鲜的包装\r\n" + //
                                        "所以能很好的控制用量\r\n" + //
                                        "也不用担心给宝宝取用的时候\r\n" + //
                                        "会导致二次污染的问题啦！👌\r\n" + //
                                        "我家大宝每次擦涂之后\r\n" + //
                                        "皮肤都是清透又滋润的感觉🥰\r\n" + //
                                        "我也准备给即将出生的👶二宝也使用这款安心霜哦\r\n" + //
                                        "这样宝宝出生就有滋润呵护\r\n" + //
                                        "不愧是新生儿的第一瓶面霜！\r\n" + //
                                        "#红色小象#红色小象90安心霜 #红色小象90霜 #秋冬面霜 #宝宝面霜 #面霜推荐 #母婴好物",
                                "团子随我干敏皮\r\n" + //
                                        "一到秋冬冷风一吹第二天立马起皴\r\n" + //
                                        "小脸红扑扑的，还干裂起皮\r\n" + //
                                        "用了好多面霜真是收效甚微😔\r\n" + //
                                        "团子爸说还得是小时候一直用的老品牌靠谱\r\n" + //
                                        "抱着试一试的态度入手了红色小象90安心霜\r\n" + //
                                        "国货老品牌果然值得信赖！\r\n" + //
                                        "-\r\n" + //
                                        "它里面的成分很精简！只有9️⃣种成分\r\n" + //
                                        "美修全绿🍃 不含香精、酒精、防腐剂等\r\n" + //
                                        "它主要的成分是巴西天然有机红没药醇\r\n" + //
                                        "可以帮助肌肤快速舒缓退红 深层滋润肌肤\r\n" + //
                                        "就像它的名字一样让人安心\r\n" + //
                                        "新生儿👶、敏敏肌都可以放心用\r\n" + //
                                        "舒缓退红、保湿修护一瓶搞定👍\r\n" + //
                                        "-\r\n" + //
                                        "清润奶霜质地，一抹吸收🧽\r\n" + //
                                        "清爽滋润的同时又不黏腻！\r\n" + //
                                        "抹上真的敲舒服😌\r\n" + //
                                        "它的真空按压设计我真的太喜欢了💕\r\n" + //
                                        "使用方便取量，精准还干净卫生\r\n" + //
                                        "而且还能锁住成分的活性\r\n" + //
                                        "真的主打一个安心❤️\r\n" + //
                                        "按头安利给所有苹果脸宝宝和敏肌姐妹🐛\r\n" + //
                                        "#红色小象 #儿童面霜 #秋冬面霜 #修护面霜 #红色小象90霜 #红色小象90安心霜",
                                "这阵子天气进入了速冻模式\r\n" + //
                                        "儿子皮肤适应不过来，干得泛红起皮\r\n" + //
                                        "越是干燥他就越要去挠觉得皮肤发痒\r\n" + //
                                        "可把我愁坏了😵‍💫\r\n" + //
                                        "\r\n" + //
                                        "做攻略看🍠老爸测评tui荐了\r\n" + //
                                        "红色小象90安心霜\r\n" + //
                                        "特意瞅了下成分👀一共就9种！\r\n" + //
                                        "基础的保湿成分基础上添加了足量的巴西天然红没药醇✔️\r\n" + //
                                        "可以舒缓zhen定受损的敏敏肌肤，缓解皮肤泛红干痒！\r\n" + //
                                        "这不是我正需要的嘛！立马入手！\r\n" + //
                                        "\r\n" + //
                                        "收到后我先自己用了感受下\r\n" + //
                                        "它是那种清润的奶霜质地，轻盈贴肤\r\n" + //
                                        "轻轻拍打就能感觉到被肌肤吸收了\r\n" + //
                                        "水润的同时又不油腻，使用感很不错👍\r\n" + //
                                        "前段时间我屏障受损什么都不能抹\r\n" + //
                                        "想着宝宝面霜没有各种添加，就抹了这款面霜\r\n" + //
                                        "极简护肤果然yyds！\r\n" + //
                                        "让我觉得之前买的贵贵护肤品是不是白花了😅\r\n" + //
                                        "才几十块钱xing价比太高了！",
                                "这个宝宝面霜真的有惊喜到我\r\n" + //
                                        "敏敏肌的宝宝冬天真的是伤不起啊\r\n" + //
                                        "小布丁天天在空调房里呆着\r\n" + //
                                        "脸变得又干又红🍎用了好多面霜效果都不怎么好\r\n" + //
                                        "\r\n" + //
                                        "看到老爸测评推荐红色小象90安心霜🎀\r\n" + //
                                        "抱着尝试的态度买了两瓶\r\n" + //
                                        "\r\n" + //
                                        "里面只含9种成分\r\n" + //
                                        "非常精简 给足妈妈更多的安心\r\n" + //
                                        "它里面可是含有巴西天然红没药醇\r\n" + //
                                        "保湿舒缓它可是一把手👍温和不刺激\r\n" + //
                                        "保湿滋润，又能很好的修护宝宝肌肤屏障\r\n" + //
                                        "对新生儿和敏敏肌宝宝都很友好\r\n" + //
                                        "眼看着小脸就慢慢的变得嫩嘟嘟的\r\n" + //
                                        "\r\n" + //
                                        "红色小象真的刷新我的消费观\r\n" + //
                                        "几十块钱也是用料足足的 效果很🐮\r\n" + //
                                        "不愧是新生儿的第一瓶面霜👍\r\n" + //
                                        "宝宝皮肤状态不好的时候\r\n" + //
                                        "睡觉前给它厚厚涂上一层\r\n" + //
                                        "第二天你会来感谢我的");
                        Random rand = new Random();

                        String content = articles.get(rand.nextInt(articles.size()));

                        return WeChatService.buildTextReply(fromUser, toUser, content);

                    }
                    default:
                        break;
                }
        }
        return msgType;
    }
}
